<?php
/**
 * The default error controller class for admin module
 * 
 * LICENSE: Free to use license
 * 
 * @copyright 	2009
 * @author 		Яковлев Иван Yak1980@list.ru | Best4u.mail@gmail.com
 * @version		$id:$
 * @link 
 * @since 
 */

//require_once 'Zend/Controller/Action.php';
//require_once 'application/modules/admin/models/DbTable/LogErrors.php';

class Admin_ErrorController extends Zend_Controller_Action
{
	private $_baseUrl = null;

	/**
     * функция init() - предназначена для инициализации необходимых параметров, т.е.
     * код внутри нее выполняется каждый раз при срабатывании данного контроллера
     */
	function init()
	{
		// Получаем базовый путь в данном случае если адрес к нашему сайту
		// имеет вид http://localhost/project-template
		// то baseUrl = /project-template
		$this->_baseUrl = $this->_request->getBaseUrl();
		
		// Задаем заголовок для тега <head> страницы
		$this->view->headTitle('Сообщение об ошибке');
		
		// Задаем заголовок страницы
		$this->view->pageTitle = 'Произошла ошибка приложения в разделе администрирования';
		
		// подключаем необходимые css таблицы стилей в зависимости от модуля и контроллера
		$this->view->headLink()->appendStylesheet($this->view->themeUrl()
		    . '/css/' . $this->_request->getModuleName() . '-'
		    . $this->_request->getControllerName() . '-layout.css'
		    . $this->view->cacheVer, 'screen');
	}
	
    /**
     *	This action handles  
     *
	 *	- Application errors
     *	- Errors in the controller chain arising from missing 
     *		controller classes and/or action methods
     */
    public function errorAction()
    {
        $errors = $this->_getParam('error_handler');
        switch ($errors->type) {
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER:
            case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION:
                // 404 error -- controller or action not found                
                $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found');
                $this->view->title = 'HTTP/1.1 404 Not Found (Запрашиваемый ресурс не найден)';
            break;
            
            default:
                // application error; display error page, but don't change                
                // status code
                $this->view->title = 'Ошибка приложения';
            break;
        }
        
        $this->view->env       = APPLICATION_ENV;  
        $this->view->exception = $errors->exception;  
        $this->view->request   = $errors->request;
        
        // заносим сообщение об ошибке в лог файл
	    $msg = 'Ошибка приложения: ' . $errors->exception->getMessage() . PHP_EOL;
		System_Logger::log($msg, 'warn', 'file', null, 'errors.log');
        
    }
}
